package com.stefanini.pe.bbva.bp.in.bo.impl;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.stefanini.pe.bbva.bp.in.bo.iface.*;
import com.stefanini.pe.bbva.bp.in.dao.iface.*;
import com.stefanini.pe.bbva.bp.in.to.AlertaClienteAdicional;
import com.stefanini.pe.bbva.bp.in.to.AlertaClienteTipoProducto;
import com.stefanini.pe.bbva.bp.in.to.Alertas;
import com.stefanini.pe.bbva.bp.in.utils.Util;

@Service("alertaBO")
public class AlertaBOImpl implements AlertaBOIface{
	@Autowired
	private AlertaDAOIface alertaDAOIface;
	
	public List<HashMap> listarEstadoAlertas() {
		return alertaDAOIface.listarEstadoAlertas();
	}

	public List<HashMap> listarAlertas(String in_idusuarioasesor, String in_codcliente, String in_fechadesde, 
			String in_fechahasta, String in_codestado, String in_idalerta, String in_idtipoalerta) throws Exception{
		return alertaDAOIface.listarAlertas(in_idusuarioasesor, in_codcliente, in_fechadesde, in_fechahasta, in_codestado, in_idalerta, in_idtipoalerta);
	}

	public List<HashMap> listarCategorias() {
		return alertaDAOIface.listarCategorias();
	}

	public List<HashMap> listarContrato(String in_codcliente, String in_idcategoriaporproducto) {
		return alertaDAOIface.listarContrato(in_codcliente, in_idcategoriaporproducto);
	}

	public List<HashMap> listarTipoAlarma(String in_idcategoriaporproducto) {
		return alertaDAOIface.listarTipoAlarma(in_idcategoriaporproducto);
	}
	
	public List<Alertas> listarAgendaAlerta(Alertas alerta) {
		List<Alertas> listaAlertas =  this.alertaDAOIface.listarAgendaAlerta(alerta);
		for(Alertas alert : listaAlertas){
			if(alert.getFecexpiracion()!=null && !alert.getFecexpiracion().trim().equals("")){
				String fechaExpiracion = Util.formatoFecha(alert.getFecexpiracion());
				alert.setFecexpiracion(fechaExpiracion);
			}
			if(alert.getFecmodi()!=null && !alert.getFecmodi().trim().equals("")){
				String fechaModif= Util.formatoFecha(alert.getFecmodi());
				alert.setFecmodi(fechaModif);
			}
			if(alert.getFechaalerta()!=null && !alert.getFechaalerta().trim().equals("")){
				String fechaAlert= Util.formatoFecha(alert.getFechaalerta());
				alert.setFechaalerta(fechaAlert);
			}
			if(alert.getTipo()!=null && alert.getTipo().equals("A"))
				alert.setInadicional(true);
			else if(alert.getTipo()!=null && alert.getTipo().equals("P"))
				alert.setIntipoproducto(true);
			if(alert.getCodcontrato()!=null && alert.getCodcontrato().trim().length()>0){
				String codContrato = alert.getCodcontrato();
					codContrato = codContrato.substring(0,4)+"-"+ 
					codContrato.substring(4,8)+"-"+
					codContrato.substring(8,10)+"-"+
					codContrato.substring(10,12)+"-"+
					codContrato.substring(12);
				alert.setCodcontrato(codContrato);
			}
		}
		return listaAlertas;
	}
	
	public List<HashMap> actualizarEstadoAtendida(Alertas alerta){
		return alertaDAOIface.actualizarEstadoAtendida(alerta);
	}

	public List<HashMap> listarTitulo(String in_codcontrato, String in_codcliente) {
		return alertaDAOIface.listarTitulo(in_codcontrato,in_codcliente);
	}
	
	public List<HashMap> listarTipoAlarmaAdicional() {
		return alertaDAOIface.listarTipoAlarmaAdicional();
	}

	public void agregarAlertaAdicional(AlertaClienteAdicional oAlertaClienteAdicional) throws Exception{
		alertaDAOIface.agregarAlertaAdicional(oAlertaClienteAdicional);		
	}

	public void agregarAlertaTipoProducto(AlertaClienteTipoProducto oAlertaClienteTipoProducto) throws Exception{
		alertaDAOIface.agregarAlertaTipoProducto(oAlertaClienteTipoProducto);
	}

	public boolean editarAlertasCliente(String in_idalertaadicional, String in_codregmodi, String in_fecmodi) {
		return alertaDAOIface.editarAlertasCliente(in_idalertaadicional, in_codregmodi, in_fecmodi);
	}

	public void editarAlertasClienteAdicional(String in_idalertaadicional, String in_idusuarioasesor, String in_codcliente, 
			String in_fechaevento, String in_idcodigotipoalarmar, String in_descripcionevento, String in_codregmodi, String in_fecmodi)  throws Exception{
		alertaDAOIface.editarAlertasClienteAdicional(in_idalertaadicional, in_idusuarioasesor, in_codcliente, in_fechaevento, in_idcodigotipoalarmar, in_descripcionevento, in_codregmodi, in_fecmodi);		
	}

	public void editarAlertasClienteTipoProducto(AlertaClienteTipoProducto oAlertaClienteTipoProducto) throws Exception{
		alertaDAOIface.editarAlertasClienteTipoProducto(oAlertaClienteTipoProducto);
	}		
}
